package org.cying.main.handler;

import cn.hutool.http.HttpStatus;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.cying.main.domain.SampleResult;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 全局限流处理器
 * @author Cying
 */
public class ClientFlowHandler {
    
    /**
     * checkToken 的限流处理方法
     * @param token 令牌
     * @param e 异常
     * @return 提示信息
     */
    public static SampleResult checkTokenHandler(int token, BlockException e) {
        return new SampleResult("Flowed", HttpStatus.HTTP_BAD_REQUEST, e.getClass().getCanonicalName(), "当前访问人数较多");
    }

    /**
     * login 的限流处理方法
     * @param sid 参数1
     * @param password 参数2
     * @param response 参数3
     * @param e 异常
     * @return 提示信息
     */
    public static SampleResult loginHandler(
            Long sid, String password, HttpServletResponse response,
            BlockException e
    ) {
        return new SampleResult("Flowed", HttpStatus.HTTP_BAD_REQUEST, e.getClass().getCanonicalName(), "当前访问人数较多");
    }

    /**
     * check 的限流处理方法
     * @param request 请求头
     * @param e 异常
     * @return 提示信息
     */
    public static SampleResult checkHandler(HttpServletRequest request, BlockException e) {
        return new SampleResult("Flowed", HttpStatus.HTTP_BAD_REQUEST, e.getClass().getCanonicalName(), "当前访问人数较多");
    }

    /**
     * createStudent 的限流处理方法
     * @param name 姓名
     * @param sid 学号
     * @param dept 部门
     * @param group 小组/职位
     * @param e 异常
     * @return 提示信息
     */
    public static SampleResult createStudentHandler(
            String name, Long sid, String dept, String group,
            BlockException e
    ) {
        return new SampleResult("Flowed", HttpStatus.HTTP_BAD_REQUEST, e.getClass().getCanonicalName(), "当前访问人数较多");
    }

}
